package org.atlantis.grosbeak.cable.meta;

import javax.servlet.http.HttpSession;

/**
 * 对于HttpSession对象的封装接口。
 * 
 * @author <a href="mailto:seenoevil.cn@gmail.com">SeeNoEvil</a>
 * 
 */
public interface SessionAware {

	/**
	 * 相当于{@link HttpSession#setAttribute(String, Object)}。
	 * 
	 * @param key
	 * @param value
	 */
	void setAttr(String key, Object value);

	/**
	 * 相当于{@link HttpSession#getAttribute(String)}。
	 * 
	 * @param key
	 * @return
	 */
	Object getAttr(String key);

	/**
	 * 相当于{@link HttpSession#getAttribute(String)}，并把获得的结果 根据转换器进行类型转换。
	 * 
	 * @param <T>
	 * @param type
	 * @param key
	 * @return
	 */
	<T> T getAttr(Class<T> type, String key);

	/**
	 * 获得当前的HttpSession对象。
	 * 
	 * @return
	 */
	HttpSession getSelf();
}
